Spring Cloud Eureka একটি সার্ভিস রেজিস্ট্রি এবং সার্ভিস ডিসকভারি সিস্টেম যা মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। এটি মাইক্রোসার্ভিসগুলোর মধ্যে যোগাযোগ সহজতর করে, যাতে এক সার্ভিস অন্য সার্ভিসটি খুঁজে পায় এবং তাদের সাথে যোগাযোগ করতে পারে। Eureka Server এবং Eureka Client এর মাধ্যমে এই সিস্টেম কাজ করে।
Eureka Server এবং Client এর ইন্টিগ্রেশন প্রক্রিয়া
Step 1: Eureka Server সেটআপ
Eureka Server হলো সার্ভিস রেজিস্ট্রি যা সকল সার্ভিসের অবস্থান সংরক্ষণ এবং পরিচালনা করে। ক্লায়েন্ট সার্ভিসগুলি Eureka Server-এ রেজিস্টার করে, এবং অন্যান্য সার্ভিসের সাথে যোগাযোগ করতে পারে।
Eureka Server Setup
Maven Dependencies:
pom.xmlফাইলে Eureka Server এর জন্য প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করুন:<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>Application Class (Eureka Server)
Spring Boot অ্যাপ্লিকেশন ক্লাসে
@EnableEurekaServerঅ্যানোটেশন ব্যবহার করে Eureka Server সক্রিয় করুন:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }application.propertiesকনফিগারেশন (Eureka Server)Eureka Server কনফিগার করতে
application.propertiesবাapplication.ymlফাইল ব্যবহার করুন:spring.application.name=eureka-server server.port=8761 eureka.client.register-with-eureka=false eureka.client.fetch-registry=falseএখানে,
register-with-eureka=falseএবংfetch-registry=falseব্যবহার করা হয়েছে কারণ এটি সার্ভিস রেজিস্ট্রি হিসেবে কাজ করছে এবং নিজেকে রেজিস্টার করতে হবে না।Run Eureka Server:
Spring Boot অ্যাপ্লিকেশন চালানোর মাধ্যমে Eureka Server শুরু হবে। এরপরে আপনি
http://localhost:8761এ Eureka Server UI দেখতে পারবেন, যেখানে সার্ভিসের তালিকা দেখতে পারবেন।
Step 2: Eureka Client সেটআপ
Eureka Client হলো সেই মাইক্রোসার্ভিস যা Eureka Server-এ রেজিস্টার হয় এবং সার্ভিস ডিসকভারি সিস্টেমের মাধ্যমে একে অপরের সাথে যোগাযোগ করতে পারে।
Eureka Client Setup
Maven Dependencies:
pom.xmlফাইলে Eureka Client এর জন্য প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করুন:<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>Application Class (Eureka Client)
Spring Boot অ্যাপ্লিকেশন ক্লাসে
@EnableEurekaClientঅ্যানোটেশন ব্যবহার করে Eureka Client সক্রিয় করুন:import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient public class MyServiceApplication { public static void main(String[] args) { SpringApplication.run(MyServiceApplication.class, args); } }application.propertiesকনফিগারেশন (Eureka Client)Eureka Client কনফিগার করতে
application.propertiesফাইলে নিম্নলিখিত কনফিগারেশন করুন:spring.application.name=my-service eureka.client.service-url.defaultZone=http://localhost:8761/eureka/এখানে,
spring.application.name=my-serviceদ্বারা ক্লায়েন্টের অ্যাপ্লিকেশন নাম নির্ধারণ করা হয় এবংeureka.client.service-url.defaultZoneEureka Server এর URL দেয়া হয়েছে।Run Eureka Client:
Spring Boot অ্যাপ্লিকেশন চালানোর মাধ্যমে Eureka Client শুরু হবে। Eureka Server UI-তে আপনি এই সার্ভিসের নাম (যেমন
my-service) দেখতে পাবেন।
Step 3: Eureka Server এবং Client এর ইন্টিগ্রেশন পরীক্ষা করা
- Eureka Server চালু করুন:
EurekaServerApplicationক্লাস চালু করুন। - Eureka Client চালু করুন:
MyServiceApplicationক্লাস চালু করুন। - Eureka UI তে সার্ভিস দেখুন:
http://localhost:8761এ যান, এবং আপনি দেখতে পাবেন যে Eureka Client সার্ভিসটি সফলভাবে রেজিস্টার হয়েছে।
Step 4: Eureka Client থেকে সার্ভিস কল করা (Load Balancing)
Eureka Client সার্ভিস রেজিস্ট্রি থেকে উপলব্ধ সার্ভিসগুলি ডিসকভার করতে পারে। এটি লোড ব্যালেন্সিংয়ের মাধ্যমে বিভিন্ন সার্ভিসের মধ্যে অনুরোধ ভাগ করে দেয়।
RestTemplateব্যবহার করে সার্ভিস কল:import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class MyServiceController { @Autowired private RestTemplate restTemplate; @GetMapping("/callService") public String callOtherService() { return restTemplate.getForObject("http://my-service/other-endpoint", String.class); } }RestTemplateBean তৈরি করুন:Eureka Client-এ লোড ব্যালেন্সিং সক্রিয় করতে,
@LoadBalancedঅ্যানোটেশন ব্যবহার করুন:import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; import org.springframework.cloud.client.loadbalancer.LoadBalanced; @Configuration public class MyServiceConfig { @Bean @LoadBalanced public RestTemplate restTemplate() { return new RestTemplate(); } }এখানে,
@LoadBalancedদ্বারা Eureka সার্ভিসের মধ্যে লোড ব্যালেন্সিং সক্রিয় করা হয়েছে। ক্লায়েন্ট সার্ভিসটি যখনmy-serviceনামের সার্ভিসে কল করবে, Eureka সার্ভিস রেজিস্ট্রির মাধ্যমে সঠিক ইনস্ট্যান্সে কলটি রাউট হবে।
উপসংহার
Spring Cloud Eureka Server এবং Client ইন্টিগ্রেশন একটি শক্তিশালী সমাধান তৈরি করে যা মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস ডিসকভারি এবং রেজিস্ট্রেশনের জন্য ব্যবহার করা হয়। এটি সার্ভিসগুলির মধ্যে ডায়নামিক যোগাযোগ এবং লোড ব্যালেন্সিং সহজ করে তোলে। Eureka Server সার্ভিস রেজিস্ট্রি এবং ডিসকভারি সরবরাহ করে এবং Eureka Client সহজভাবে সার্ভিসগুলো খুঁজে পায় এবং তাদের সাথে যোগাযোগ করতে পারে।
Read more